Revocation of Public Key Infrastructure Signatures

ABSTRACT

In one implementation, a public key infrastructure utilizes a two stage revocation process for a set of data. One stage authenticates or revokes the set of data based on the status of the digital signature and another stage authenticates or revokes the set of data based on the status of an individual signature by the digital certificate. For example, a digital certificate based is assigned a certificate number. A serial number is assigned for a signature for the set of data as signed by the digital certificate. A data transmission, data packet, or install package includes the set of data, the certificate number and the serial number. Therefore, individual instances of the signature may be revoked according to serial number.

TECHNICAL FIELD

This disclosure relates in general to the field of public keyinfrastructures, or more particularly, to the revocation of signaturesin public key infrastructure or another cryptographic or electronicsignature technique.

BACKGROUND

A digital signature is a mathematical scheme for insuring theauthenticity of a message or a document. A recipient of the message ordocument verifies the source using the digital signature. In addition,the digital signature may also be used to detect tampering of the datain transit. A digital signature is generated using private key materialthat is usually associated with a digital certificate.

A digital certificate may be created by a public key infrastructure(PKI), including a private key and a public key. The digital certificateis created by generating a digital signature over public key materialand can be verified using the signer's public key. In order for thedigital certificate system to be secure, the signer's private key mustbe kept secure. If the private key is leaked or otherwise compromised,even for a short period of time, perfect forgeries of digital signaturesmay be issued. An unauthorized user may gain access to the private keyand make a copy of the private key, thus allowing unauthorized forgeriesof digital signatures and digital certificates. Additionally, forgeddigital signatures may be created when an unauthorized user gainstemporary control of a computer storing the private key. Even if thecomputer prevents unauthorized copies, the unauthorized user mayinstruct the computer to generate unauthorized digital signatures,including creation of digital certificates. Techniques have been devisedfor revoking forged copies of digital certificates but not for revokingdigital signatures in general.

BRIEF DESCRIPTION OF THE DRAWINGS

Exemplary embodiments of the present embodiments are described hereinwith reference to the following drawings.

FIG. 1 illustrates an example system for the revocation of public keyinfrastructure signatures.

FIG. 2 illustrates an example signed data packet.

FIG. 3 illustrates another example system for the revocation of publickey infrastructure signatures.

FIG. 4 illustrates an example network device of the systems of FIGS. 1and 2.

FIG. 5 illustrates an example flowchart for the revocation of public keyinfrastructure signatures.

DESCRIPTION OF EXAMPLE EMBODIMENTS Overview

In one embodiment, a method includes receiving a digital certificatederived from a cryptographic key, wherein the digital certificateincludes a certificate number assigned to the digital certificate,generating a signature for a set of data using the digital certificate,assigning, by a processor, a signature serial number to the signaturefor the set of data, and generating, by the processor, a data packetincluding the certificate number and the signature serial number.

In another embodiment, an apparatus includes at least a controller, adatabase, and a communication interface. The controller configured toassign a serial number to a signature of a digital certificate appliedto authenticate a set of code. The digital certificate includes acertificate number. A database is configured to store a signaturerevocation flag associated with the serial number of the signature andthe certificate number of the digital certificate. A communicationinterface is configured to receive an authentication request for theserial number of the signature and the certificate number of the digitalcertificate. The controller is configured to access the signaturerevocation flag associated with the serial number of the signature andthe certificate number of the digital certificate in response to theauthentication request.

Example Embodiments

Public key infrastructure (PKI) is the system through which digitalcertificates are generated, distributed, verified, and revoked. Adigital certificate is a set of information (e.g., electronic document)that provides a form of identification for the creator of another set ofdata. The digital certificate may include a public key. The creator ofthe other set of data may be referred to as the certificate holder. Thedigital certificate guarantees the authenticity of the origin of theother set of data. The digital certificate is issued by a certificationauthority (CA). The CA may be a server or another computer.

PKI includes an asymmetric key algorithm in which two separate keys areassigned to a specific entity. One of the keys is a public key and iswidely distributed. The other key is secret or private. The public keyand the private key are mathematically linked. For example, the publickey may be configured to lock or encrypt data, and the private key maybe configured to unlock or decrypt the data. In one example, only thepublic key locks or encrypts data, and only the private key unlocks ordecrypts the data. Thus, neither key performs both functions alone. Thepublic key may be published without compromising security, while theprivate key must not be revealed to unauthorized parties.

The digital certificate may be a digital credential, a digital passport,or any set of information that binds authentication information to apublic key that corresponds to a private key held by the entity named inthe digital certificate.

Private keys may be compromised through unauthorized access or controlof the holder of the private key. In one instance, the private key isstored in a hardware security module (HSM), which includes acryptoprocessor or another device configured to prevent all access toremoving, deleting, or copying the private key. Even the machine storingand managing the private key is prevented from full access to theprivate key.

The digital certificate indicates the entity named in the digitalcertificate has possession of the private key or alternatively, that thebearer of the private key is the named entity. The digital certificatesigns one key to authenticate or guarantee the location of the otherkey. Similarly, the possessor of a private key may authenticate orguarantee the any set of data by the cryptographic generation of asignature coupled to the set of data. Example sets of data include apiece of software, an application, an electronic ticket, a digital musicfile, an audio book, an image, a movie, or any data file with anauthenticated source.

The digital certificate data may include the name of the CA, the name ofthe certificate holder, a certificate number, an expiration date for thecertificate, the public key of the certificate holder, and the digitalsignature of the CA. Other signed data sets may include only a subset,or none, of this information. The CA may also include a revocationdatabase. The revocation database lists certificates and a state foreach certificate. The revocation database may list certificates bycertificate number. When a certificate is revoked, all signaturesgenerated using the private key are simultaneously revoked.

Revocation of a digital certificate is effective in eradicating anunauthorized signature because no relying party will accept anysignatures generated by the private key identified by the revokeddigital certificate. However, in some instances, only some of thesignatures may have been unauthorized. Thus, the certificate holder mustobtain a new key pair (e.g., private and public), have the key paircertified by the certification authority, and re-sign and re-distributeall of the data signed with signatures that were properly issued as partof the process of revoking the unauthorized signatures.

The following embodiments include a signature serial number that isissued for each instance of a signature in addition to any serial numberincluded within the data itself. A trusted signature database includes alist of signatures by signature serial number. The database may alsoinclude a list of certificates by certificate serial number. Thedatabase may list a signature state for each signature and a certificatestate for each certificate. The states may be active, revoked, oranother state. The signature serial numbers may be used to revoke only asub-set of the signatures associated with a digital signature. Thesignature serial numbers may be used to revoke individual signatureseven if the data itself does not include a serial number.

FIG. 1 illustrates an example system for the revocation of public keyinfrastructure signatures. The system includes a signing server or acode signing server 101, a certificate authority server 103, and aclient device 105, each coupled with a network 111. The phrase “coupledwith” includes directly connected to or indirectly connected through oneor more intermediate components. Such intermediate components mayinclude hardware and/or software-based components. The certificationauthority server 103 issues a digital certificate that is revocablebased on the identity of the digital signature or a particular instanceof a signature using the private key. Additional, different, or fewercomponents may be provided, such as the signing server 101 and thecertification authority server 103 may be combined in a single server.Also, the signing server 101 and the certification authority server 103may be another type of network-connected device such as a computer.

FIG. 2 illustrates an example signed data packet 200. The signed datapacket 200 includes a data set 201, a signature 203, a certificatenumber of the signing entity 205, a signature serial number 207, and arevocation algorithm value 209.

The certification authority server 103, the signing server 101, or anybearer of a private key, signs signed data packet 200 using the privatekey or another cryptographic key. The certification authority server 103certifies that a computer, a network device, a user or an enterprisepossesses the private key indicated by a digital certificate. Thecertification authority server 103 is configured to assign the signingentity's certificate number 205 to the digital certificate. The signingentity's certificate number 205 may be a unique number assigned to thecomputer, the network device, the user or the enterprise. The signingentity's certificate number 205 may be derived from a media accesscontrol address of the computer. The signing entity's certificate number205 may be derived from the name or address of the computer, the networkdevice, the user or the enterprise. The signing entity's certificatenumber 205 may be created by a random number generator or the source.

The signing server 101 is configured to generate the signature 203 forthe set of data 201 using the digital certificate. The signature 203 maybe derived from a private key accessible by the signing server 101. Thesigning server 101 may have access to multiple private keys, and signingservers may have access to a single private key.

The signing server 101 is configured to assign the signature serialnumber 207 to the signature 203 for the set of data 201. The signatureserial number 207 may be a hash of or other function of the signature.The serial number 207 is unique to every instance of a signature fromthe digital certificate. The serial number 207 may include multipleparts or a single part. The serial number 207 may include a firstportion related to a date, such as a creation date, an expiration date,and/or an effective data for the signature. The serial number 207 mayinclude a second portion related to the identity of the certificationauthority server 103 or the signing server 101. A signing entity (e.g.,an enterprise, website, a domain, or a company) may include multiplesigning servers, each identified by an identification value that isincorporated into the signature serial number 207. The signature serialnumber 207 may include a third portion that is sequentially assigned.The signature serial number 207 for the signature and the signingentity's certificate number 205 may be combined (e.g., concatenated intoa single alphanumeric string).

The signing server 101 is configured generate a data packet includingthe certificate number 205 and the signature serial number 207. The datapacket may be a packet of data defined under layer 3 of the OSI model(e.g., user datagram protocol, transmission control protocol, or anotherprotocol) or a layer 2 frame. The data packet may include an executableapplication such as a mobile app or another type of software. The datapacket may be any collection of data sent from one party to another withan authenticity guarantee.

The database 307 (e.g., trusted signature database) coupled with thesigning server 101 may be configured to store a list or a range of validsignatures. The database 307 may be coupled directly to the signingserver 101 or through the network 111. The database 307 is updated uponissuance of each instance of a signature. Alternatively, the database307 may indicate that all instances of signatures for a digitalcertificate are valid until a particular signature should be revoked. Inone example, the database 307 includes a list of signatures eachassociated with a revocation flag. The revocation flag indicates thatthe signature is revoked. The revocation flag may include an effectivedate and/or time for the revocation. In one example, the singing server101 generates a log related to the generation of the signature. The logmay include, for example, one or more of the authorization mechanismused, the results of authorization, the data signed, the reason forsigning or other information. The signing server 101 may store the login memory or in database 307.

The database 307 is queried based on a request received from a clientdevice 105. The query may be initiated by the signing server 101, thecertification authority server 103, or another device. The client device105 is attempting to verify the set of data 201 signed with the digitalcertificate. The request includes at least the serial number 207 of thesignature and may include the certificate number of the signing entity.When the database 307 indicates that the signature 203 is revoked, thecertification authority server 103 generates a revocation message, whichis sent to the client device 105. When the database 307 indicates thatthe signature 203 is not revoked, the certification authority server 103generates a verification message, which is sent to the client device105.

In one example, the revocation process may also have a second stage insuccession or concurrently. The request may also include the signingentity's certificate number 205 of the digital certificate. When thedatabase 307 indicates that the either the signing entity's certificatenumber 205 or the signature 203 is revoked, the certification authorityserver 103 generates a revocation message, which is sent to the clientdevice 105. When the database 307 indicates that both the signingentity's certificate number 205 and the signature 203 are not revoked,the certification authority server 103 generates an authenticationmessage, which is sent to the client device 105.

FIG. 3 illustrates another example system for the revocation of publickey infrastructure signatures. In addition to the signing server 101,the certification authority server 103, and the client device 105, thesystem of FIG. 3 includes a revocation server 107. The revocation server107 is configured to perform a revocation algorithm in response to arequest from a client device 105. The request from the client device 105is an attempt to authenticate a file, which may be a computer program oranother licensed set of data. An operating system of the client device105 initiates the request in response to the user attempting to open afile or an executable program.

The signed data packet 200, as shown in FIG. 2, includes a revocationalgorithm value 209 indicative of the revocation algorithm. Therevocation algorithm may include either a local revocation check or aremote revocation check. The revocation algorithm may check a list ofvalid signatures to determine whether the particular signature numberhas been revoked or check a list of invalid signatures to determinewhether the particular signature number has been revoked. In addition,to checking signatures, the revocation algorithm may check for revokeddigital certificates. The revocation algorithm may return a response ofgood, revoked, or unknown for the signature and/or for the digitalcertificate. When the revocation algorithm returns the response ofvalid, then the set of data 201 is verified as originating with thesource that the signed data packet 200 purports to be from.

The remote revocation check occurs at the client device 105. Therevocation server 107, in response to receiving the request from theclient device 105, sends the list of revoked signatures to the clientdevice 105. The client device 105 checks the signature for revokedstatus. The list of signatures may also include an expiration dateand/or time. The remote server may request a new list of signatures whenthe current date and time is past the expiration date and time. Theremote revocation check may check the status of the signature via asignature revocation list (SRL). The remote revocation check may alsocheck the status of the entire digital certificate via a certificaterevocation list (CRL).

The local revocation check occurs at the revocation server 107. Therevocation server 107 receives the serial number of the digitalsignature from the client device 105 and checks the signature against alist of signatures in the database 307, which may be referred to asonline signature status protocol (OSSP). The local revocation check mayalso check the status of the entire digital certificate via the onlinecertificate status protocol (OCSP). The revocation server 107 may be anOCSP server. The OCSP server provides a real time mechanism to determinedigital certificate status and signature status. Because the OCSP serveris queried for each check, no expiration dates are needed for thesignatures lists. In addition, bandwidth is reduced because the entiresignature lists are not downloaded by the client device 105.

Other protocols may be used besides the SRL, OSSP, OCSP and CRLexamples. The digital certificate may include a distribution point fieldincluding the revocation algorithm value 209 that specifies therevocation algorithm. Examples for the value include remote, local,OSSP, SRL, OCSP, CRL, or another protocol.

FIG. 4 illustrates an example network device 300 for the networks ofFIG. 1 of FIG. 2. The network device 300 includes at least a memory 301,a controller 303, and a communication interface 305. The network device300 may perform functions described above with respect to the signingserver 101. In one embodiment, the network device 300 also performsfunctions of the certification authority server 103 and/or therevocation server 107 as described above. Additional, different, orfewer components may be provided. Different network devices may have thesame or different arrangement of components.

The controller 303 is configured to generate signatures using a digitalcertificate. The controller 303 assigns a signing entity's certificatenumber 205 and assigns a serial number 207 to each signature applied tothe data being signed. The set of code can be any uniquely identifiableset of data. Uniquely identifiable sets of data include individuallylicense software programs, electronic tickets, or media files. Thecontroller 303 generates a data packet including the signing entity'scertificate number 205, the serial number 207, and revocation algorithmdata (e.g., revocation algorithm value 209) that specifies an algorithmfor authenticating the signature. The algorithm may be a remotealgorithm executed by the recipient of the data packet or a localalgorithm executed by the controller 303 in response to a request fromthe recipient of the data packet.

In response to generation of each signature, an entry is added todatabase 307. The entry includes the signing entity's certificate number205 and the signature serial number 207. The entry also includes asignature revocation flag associated with the signature serial number207 and the signing entity's certificate number 205 of the digitalcertificate. The signature revocation flag initially has a positivevalue (e.g., good, authenticated, or a binary value of 1). However, thecontroller 303 is configured to switch the signature revocation flag toa revoked value based on a command received from an authorizedadministrator. The revocation may be made in response to an indicationthat the private key was compromised for a time and/or unauthorizedsignatures were issued.

The communication interface 305 is configured to receive anauthentication request for the serial number 207 of the signature and/orthe signing entity's certificate number 205 of the digital certificate.The authentication request may be generated at a remote device inresponse to an operating system, a browser, or another client attemptingto open application coupled to the digital certificate.

The controller 303 queries the database 303 to identify whether theparticular serial number is marked as revoked or not revoked. Thecontroller 303 is configured to generate a revocation message for thedigital certificate when the database lists the signing entity'scertificate number as revoked and generate a revocation message for thesignature when the database lists the serial number as revoked.

The controller 303 may include a general processor, digital signalprocessor, an application specific integrated circuit (ASIC), fieldprogrammable gate array (FPGA), analog circuit, digital circuit,combinations thereof, or other now known or later developed processor.The controller 303 may be a single device or combinations of devices,such as associated with a network, distributed processing, or cloudcomputing.

The memory 301 may be a volatile memory or a non-volatile memory. Thememory 301 may include one or more of a read only memory (ROM), randomaccess memory (RAM), a flash memory, an electronic erasable program readonly memory (EEPROM), or other type of memory. The memory 301 may beremovable from the network device 300, such as a secure digital (SD)memory card.

In addition to ingress ports and egress ports, the communicationinterface may include any operable connection. An operable connectionmay be one in which signals, physical communications, and/or logicalcommunications may be sent and/or received. An operable connection mayinclude a physical interface, an electrical interface, and/or a datainterface.

FIG. 5 illustrates an example flowchart for propagating identityinformation for Internet services. The acts in FIG. 5 may be performedby the network device 101 or another device such as a single deviceacting as a signing server and a revocation server, which may bereferred to in the alternative using the term controller. Additional,different, or fewer acts may be provided. The acts are performed in theorder shown or other orders. The acts may also be repeated.

At act S101, the controller receives a digital certificate thatidentifies an author of a set of data based on a private key. Theprivate key may bind information of the author (e.g., the name oraddress of a person or an organization). The digital certificate isindexed by a certificate number. The certificate number may be stored ina trusted signature database accessible by the controller.

At act S103, the controller generates a signature for an instance of theset of data using the digital certificate. The instance of the set ofdata may be an authorization statement that provides access to aresource, a ticket that may be printed and scanned for entry into aconcert, a sporting event or another event, a boarding pass at anairport or other more of transportation, an audio book, an image fromthe Hubble telescope, a music file, a program executable, or footagefrom a security camera.

At S105, the controller assigns a serial number to the signature for theinstance of the set of data. The serial number may be sequential. Thatis, the first instance of a signature for the digital certificate isnumber one, the second instance is number two, and so forth.Alternatively, the serial number may be tied to the exact date, hour,minute, second, and/or smaller time interval that the serial number wasgenerated, insuring uniqueness among the signatures. The serial numbermay be generated using a random number generator and logged in memory toprevent duplicates. The serial number may be a combination of any ofthese or other techniques.

The signing entity's certificate number may be stored in a trustedsignature database accessible by the controller and may be associatedwith the signature serial number. The trusted signature database mayinclude a revocation flag that identifies whether each instance ofsignature from the digital certificate has been revoked or not. A daterange, time range, sequential range, or individual instances of thesignatures may be revoked when it becomes known or likely that theprivate key or digital certificate was compromised or subject tounauthorized use. The controller is configured to change the state ofthe revocation flag from authentic to revoked in response to dataindicative of unauthorized use.

At S107, the controller generates a data transmission including thesigning entity's certificate number, the serial number, and the instanceof the set of licensed data. The data transmission may be a download ofthe set of licensed data. For example, the download may be a purchase ofa software program, media file, electronic ticket or another purchase.The data transmission may be made by email, file transfer protocol,hypertext transfer protocol, secure hypertext transfer protocol, oranother method.

The recipient of the set of data generates a request to verify thedigital certificate and/or the signature. The controller receives therequest and queries the digital signature database based on the request.The controller sends data indicative of the revocation flag to therecipient of the set of data. Therefore, individual instances ofsignatures may be revoked without re-issuing and re-distributing allsignature instances signed with the digital certificate.

The network may include wired networks, wireless networks, orcombinations thereof. The wireless network may be a cellular telephonenetwork, an 802.11, 802.16, 802.20, or WiMax network. Further, thenetwork may be a public network, such as the Internet, a privatenetwork, such as an intranet, or combinations thereof, and may utilize avariety of networking protocols now available or later developedincluding, but not limited to TCP/IP based networking protocols.

The memory 301 and the database 307 are examples of computer readablemedia or non-transitory computer readable media. While thecomputer-readable medium is shown to be a single medium, the term“computer-readable medium” includes a single medium or multiple media,such as a centralized or distributed database, and/or associated cachesand servers that store one or more sets of instructions. The term“computer-readable medium” shall also include any medium that is capableof storing, encoding or carrying a set of instructions for execution bya processor or that cause a computer system to perform any one or moreof the methods or operations disclosed herein.

In a particular non-limiting, exemplary embodiment, thecomputer-readable medium can include a solid-state memory such as amemory card or other package that houses one or more non-volatileread-only memories. Further, the computer-readable medium can be arandom access memory or other volatile re-writable memory. Additionally,the computer-readable medium can include a magneto-optical or opticalmedium, such as a disk or tapes or other storage device to capturecarrier wave signals such as a signal communicated over a transmissionmedium. A digital file attachment to an e-mail or other self-containedinformation archive or set of archives may be considered a distributionmedium that is a tangible storage medium. Accordingly, the disclosure isconsidered to include any one or more of a computer-readable medium or adistribution medium and other equivalents and successor media, in whichdata or instructions may be stored. The computer-readable medium may benon-transitory, which includes all tangible computer-readable media.

In an alternative embodiment, dedicated hardware implementations, suchas application specific integrated circuits, programmable logic arraysand other hardware devices, can be constructed to implement one or moreof the methods described herein. Applications that may include theapparatus and systems of various embodiments can broadly include avariety of electronic and computer systems. One or more embodimentsdescribed herein may implement functions using two or more specificinterconnected hardware modules or devices with related control and datasignals that can be communicated between and through the modules, or asportions of an application-specific integrated circuit. Accordingly, thepresent system encompasses software, firmware, and hardwareimplementations.

In accordance with various embodiments of the present disclosure, themethods described herein may be implemented by software programsexecutable by a computer system. Further, in an exemplary, non-limitedembodiment, implementations can include distributed processing,component/object distributed processing, and parallel processing.Alternatively, virtual computer system processing can be constructed toimplement one or more of the methods or functionality as describedherein.

Although the present specification describes components and functionsthat may be implemented in particular embodiments with reference toparticular standards and protocols, the invention is not limited to suchstandards and protocols. For example, standards for Internet and otherpacket switched network transmission (e.g., TCP/IP, UDP/IP, HTML, HTTP,HTTPS) represent examples of the state of the art. Such standards areperiodically superseded by faster or more efficient equivalents havingessentially the same functions. Accordingly, replacement standards andprotocols having the same or similar functions as those disclosed hereinare considered equivalents thereof.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a standalone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

As used in this application, the term ‘circuitry’ or ‘circuit’ refers toall of the following: (a) hardware-only circuit implementations (such asimplementations in only analog and/or digital circuitry) and (b) tocombinations of circuits and software (and/or firmware), such as (asapplicable): (i) to a combination of processor(s) or (ii) to portions ofprocessor(s)/software (including digital signal processor(s)), software,and memory(ies) that work together to cause an apparatus, such as amobile phone or server, to perform various functions) and (c) tocircuits, such as a microprocessor(s) or a portion of amicroprocessor(s), that require software or firmware for operation, evenif the software or firmware is not physically present.

This definition of ‘circuitry’ applies to all uses of this term in thisapplication, including in any claims. As a further example, as used inthis application, the term “circuitry” would also cover animplementation of merely a processor (or multiple processors) or portionof a processor and its (or their) accompanying software and/or firmware.The term “circuitry” would also cover, for example and if applicable tothe particular claim element, a baseband integrated circuit orapplications processor integrated circuit for a mobile phone or asimilar integrated circuit in server, a cellular network device, orother network device.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andanyone or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer readable media suitable forstoring computer program instructions and data include all forms ofnon-volatile memory, media and memory devices, including by way ofexample semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto optical disks; and CD ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back end, middleware, or front end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The illustrations of the embodiments described herein are intended toprovide a general understanding of the structure of the variousembodiments. The illustrations are not intended to serve as a completedescription of all of the elements and features of apparatus and systemsthat utilize the structures or methods described herein. Many otherembodiments may be apparent to those of skill in the art upon reviewingthe disclosure. Other embodiments may be utilized and derived from thedisclosure, such that structural and logical substitutions and changesmay be made without departing from the scope of the disclosure.Additionally, the illustrations are merely representational and may notbe drawn to scale. Certain proportions within the illustrations may beexaggerated, while other proportions may be minimized. Accordingly, thedisclosure and the figures are to be regarded as illustrative ratherthan restrictive.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what may beclaimed, but rather as descriptions of features specific to particularembodiments of the invention. Certain features that are described inthis specification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable sub-combination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a sub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings and describedherein in a particular order, this should not be understood as requiringthat such operations be performed in the particular order shown or insequential order, or that all illustrated operations be performed, toachieve desirable results. In certain circumstances, multitasking andparallel processing may be advantageous. Moreover, the separation ofvarious system components in the embodiments described above should notbe understood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

One or more embodiments of the disclosure may be referred to herein,individually and/or collectively, by the term “invention” merely forconvenience and without intending to voluntarily limit the scope of thisapplication to any particular invention or inventive concept. Moreover,although specific embodiments have been illustrated and describedherein, it should be appreciated that any subsequent arrangementdesigned to achieve the same or similar purpose may be substituted forthe specific embodiments shown. This disclosure is intended to cover anyand all subsequent adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the description.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b) and is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description, various features may begrouped together or described in a single embodiment for the purpose ofstreamlining the disclosure. This disclosure is not to be interpreted asreflecting an intention that the claimed embodiments require morefeatures than are expressly recited in each claim. Rather, as thefollowing claims reflect, inventive subject matter may be directed toless than all of the features of any of the disclosed embodiments. Thus,the following claims are incorporated into the Detailed Description,with each claim standing on its own as defining separately claimedsubject matter.

It is intended that the foregoing detailed description be regarded asillustrative rather than limiting and that it is understood that thefollowing claims including all equivalents are intended to define thescope of the invention. The claims should not be read as limited to thedescribed order or elements unless stated to that effect. Therefore, allembodiments that come within the scope and spirit of the followingclaims and equivalents thereto are claimed as the invention.

We claim:
 1. A method comprising: receiving a digital certificatederived from a cryptographic key, wherein the digital certificateincludes a certificate number assigned to the digital certificate;generating a signature for a set of data using the digital certificate;assigning, by a processor, a signature serial number to the signaturefor the set of data; and generating, by the processor, a data packetincluding the certificate number and the signature serial number.
 2. Themethod of claim 1, further comprising: storing the signature serialnumber in a trusted signature database.
 3. The method of claim 2,further comprising: receiving an instruction to revoke the signature;and appending a revocation flag for the signature serial number in thetrusted signature database.
 4. The method of claim 3, furthercomprising: receiving a request for authentication of the signature;querying the trusted signature database in response to the request forauthentication of the signature; and generating a response to therequest for authentication based on the revocation flag from the trustedsignature database.
 5. The method of claim 1, further comprising:receiving a request for authentication of the signature from a remoteserver, wherein the request for authentication includes the signatureserial number and the certificate number; and querying a trustedsignature database in response to the request for authentication of thesignature using the serial number.
 6. The method of claim 5, furthercomprising: generating a revocation message for the digital certificatewhen the trusted signature database lists the certificate number asrevoked; and generating a revocation message for the signature when thetrusted signature database lists the serial number as revoked.
 7. Themethod of claim 1, wherein the data packet includes data indicative ofan algorithm for verifying the signature.
 8. The method of claim 1,wherein the data indicative of the algorithm for authenticating thesignature indicates a procedure performed by a remote server.
 9. Themethod of claim 1, wherein the data indicative of the algorithm forauthenticating the signature indicates that the authentication isperformed by a database local to the processor.
 10. The method of claim1, wherein the set of data is an executable application.
 11. The methodof claim 1, wherein the set of data is an electronic ticket file, aphotograph file, a music file, or a program executable.
 12. An apparatuscomprising: a controller configured to assign a serial number to asignature of a digital certificate applied to authenticate a set ofcode, wherein the digital certificate includes a certificate number; adatabase configured to store a signature revocation flag associated withthe serial number of the signature and the certificate number of thedigital certificate; and a communication interface configured to receivean authentication request for the serial number of the signature and thecertificate number of the digital certificate, wherein the controller isconfigured to access the signature revocation flag associated with theserial number of the signature and the certificate number of the digitalcertificate in response to the authentication request.
 13. The apparatusof claim 12, wherein the signature of the digital certificate isgenerated using a private key of a user of the apparatus.
 14. Theapparatus of claim 12, wherein the communication interface is configuredto receive an instruction to revoke the signature from a certificateholder server, and the controller is configured to generate thesignature revocation flag for the serial number in the database inresponse to the instruction to revoke the signature.
 15. The apparatusof claim 12, wherein the database is configured to store a certificaterevocation flag associated with the certificate number of the digitalcertificate; and wherein the controller is configured to generate arevocation message for the digital certificate when the database liststhe certificate number as revoked and generate a revocation message forthe signature when the database lists the serial number as revoked. 16.The apparatus of claim 12, wherein the controller is configured togenerate a data packet includes the authenticated set of code andrevocation algorithm data that specifies an algorithm for checking therevocation of the signature.
 17. The apparatus of claim 12, wherein theset of code is an executable application or a media file.
 18. Anon-transitory computer readable medium including instructions that whenexecuted by a processor are operable to: receive a data packet includinga digital certificate that identifies a signer of a set of data based ona cryptographic key and including a signature for an instance of the setof data using the digital certificate, wherein the digital certificateis indexed by a certificate number and the signature is assigned aserial number for the instance of the set of data; and generate arequest for verification of revocation status including the certificatenumber of the digital certificate and the serial number of the signaturefor the instance of the set of data.
 19. The non-transitory computerreadable medium of claim 18, wherein the data packets includes arevocation algorithm value that indicates either a local revocationalgorithm or a remote revocation algorithm.
 20. The non-transitorycomputer readable medium of claim 19, wherein the set of data is asoftware program or a media file.